//封装JS获取标签id，之后用 my$(id)代替document.getElementById(id)
function my$(id) {
    return document.getElementById(id)
}

//兼容:设置任意标签中间的任意文字
function setText(element, text) {
    if (typeof element.textContent == "undefined") {
        element.innerText = text;
    } else {
        element.textContent = text;
    }
}
//兼容:获取任意标签的文字	 
function getText(element) {
    if (typeof element.textContent == "undefined") {
        return element.innerText;
    } else {
        return element.textContent;
    }
}
//兼容:获取任意一个父级元素的第一个子级元素
function getFirstElementChild(element) {
    if (element.firstElementChild) {
        console
        return element.firstElementChild;
    } else {
        var nodes = element.firstChild;
        while (nodes && nodes.nodeType != 1) {
            nodes = nodes.nextSibling;
        }
        return nodes;
    }
}
//兼容:获取任意一个父级元素的最后一个子级元素
function getLastElementChild(element) {
    if (element.lastElementChild) {
        return element.lastElementChild;
    } else {
        var nodes = element.lastChild;
        while (nodes && nodes.nodeType != 1) {
            nodes = nodes.previousSibling;
        }
        return nodes;
    }
}

//兼容:绑定事件的兼容
function addEventListener(element, type, fn) {
    if (element.addEventListener) {
        element.addEventListener(type, fn, false);
    } else if (element.attachEvent) {
        element.attachEvent("on" + type, fn)
    } else {
        element["on" + type] = fn;
    }
}
//兼容:为任意的一个元素,解绑对应的事件
function removeEventListener(element, type, fn) {
    if (element.removeEventListener) {
        element.removeEventListener(type, fn, false);
    } else if (element.detachEvent) {
        element.detachEvent("on" + type, fn);
    } else {
        element["on" + type] = null;
    }
}

//封装动画:缓动移动不同的值 //attr元素的属性    targrt属性值名
function animate(element, attr, target, time) {
    clearInterval(element.timeR)
    element.timeR = setInterval(function () {
        var currle = parseInt(getStyle(element, attr));
        var step = (target - currle) / 10;
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        currle += step;
        if (currle != target) {
            element.style[attr] = currle + "px";
        } else {
            clearInterval(element.timeR)
        }
        //					console.log("增加位置："+currle+"当前位置："+target+"移动步数:"+step)
    }, time)
}

//缓速向左动画
function slowAnimation(element, target, time) {
    clearInterval(element.timeR)
    element.timeR = setInterval(function () {
        var currle = element.offsetLeft;
        var step = (target - currle) / 10;
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        currle += step;
        if (currle != target) {
            element.style.left = currle + "px";
        } else {
            clearInterval(element.timeR)
        }
        //					console.log("增加位置："+currle+"当前位置："+target+"移动步数:"+step)
    }, time)
}

//获取任意一个元素的任意一个属性的当前的值---当前属性的位置值
function getStyle(element, attr) {
    return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0;
}
//动画函数  有宽高 top left opactiy zIndex
function animateStyle(element, json, time, fn) {
    clearInterval(element.timeId); //清理定时器
    //定时器,返回的是定时器的id
    element.timeId = setInterval(function () {
        var flag = true; //默认,假设,全部到达目标
        //遍历json对象中的每个属性还有属性对应的目标值
        for (var attr in json) {
            //判断这个属性attr中是不是opacity
            if (attr == "opacity") {
                //获取元素的当前的透明度,当前的透明度放大100倍
                var current = getStyle(element, attr) * 100;
                //目标的透明度放大100倍
                var target = json[attr] * 100;
                var step = (target - current) / 10;
                step = step > 0 ? Math.ceil(step) : Math.floor(step);
                current += step; //移动后的值
                element.style[attr] = current / 100;

            } else if (attr == "zIndex") { //判断这个属性attr中是不是zIndex
                //层级改变就是直接改变这个属性的值
                element.style[attr] = json[attr];

            } else {
                //普通的属性
                //获取元素这个属性的当前的值
                var current = parseInt(getStyle(element, attr));
                //当前的属性对应的目标值
                var target = json[attr];
                //移动的步数
                var step = (target - current) / 10;
                step = step > 0 ? Math.ceil(step) : Math.floor(step);
                current += step; //移动后的值
                element.style[attr] = current + "px"
            }
            //是否到达目标
            if (current != target) {
                flag = false
            }
        }
        if (flag) {
            //清理定时器
            clearInterval(element.timeId);
            //所有的属性到达目标才能使用这个函数,前提是用户传入了这个函数
            if (fn) {
                fn();
            }
        }
        //测试代码
        //		console.log(element);
        //		console.log(attr);
        //		console.log("目标:" + target + ",当前:" + current + ",每次的移动步数:" + step);
    }, time);
}

//兼容:封装获取页面向上或者向左卷曲出去的距离的值
function getScroll() {
    return {
        top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
        left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
    }
}

//兼容:封装获取页面向上或者向左卷曲出去的距离的值   随着鼠标移动的距离

var evt = {
    getEvent: function (evt) {
        return window.event || evt;
    },
    getclientX: function (evt) {
        return this.getEvent(evt).clientX;
    },
    getclientY: function (evt) {
        return this.getEvent(evt).clientY;
    },


    getScrollLR: function (evt) {
        return {
            left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
            top: window.pageYOffset || document.documentElement.scrollt || document.body.scrollTop || 0,
        }
    },

    getPageX: function (evt) {
        return this.getEvent(evt).pageX ? this.getEvent(evt).pageX : this.getclientX(evt) + this.getScrollLR(evt).left;
    },

    getPageY: function (evt) {
        return this.getEvent(evt).pageY ? this.getEvent(evt).pageY : this.getclientY(evt) + this.getScrollLT(evt).top;
    },

}

//获取超链接,注册点击事件,显示登录框和遮挡层
function dragFloatingLayer(oInfo) {
    // click, mainClass, dragDropClass, backgroup, closeBtn, zIndex
    if (!oInfo.zIndex) { oInfo.zIndex = 99 }
    $(oInfo.clickele).click(function () {
        $('body', parent.document).css("overflow", "hidden")  //子窗口获取父窗口的元素
        $('#router', parent.document).css("overflow", "hidden")   //子窗口获取父窗口的元素
        $('#router iframe', parent.document).css("height", "100vh")  //子窗口获取父窗口的元素

        $("body").css("height", "100vh")
        $("body").css("overflow", "hide")

        $(".kim-mack-content").show()
        $(oInfo.dispalyMainClass).show()
        $(oInfo.dispalyMainClass).css("zIndex", oInfo.zIndex)
        $(oInfo.backgroup).show()

    })

    //获取关闭,注册点击事件,隐藏登录框和遮挡层
    // $(".kim-close-icon,.kim-all-noicon-close").click(function () {
    $(oInfo.closeBtn).click(function () {
        if (oInfo.isHideMack) { var _oInfoIsHideMack = true } else { var _oInfoIsHideMack = false }

        $('body', parent.document).css("overflow", "initial")  //子窗口获取父窗口的元素
        $('#router', parent.document).css("overflow", "initial")   //子窗口获取父窗口的元素
        $('#router iframe', parent.document).css("height", "3000px")  //子窗口获取父窗口的元素
        // parent.$("body").css("height","3000px");

        $(oInfo.dispalyMainClass).hide()
        console.log(oInfo.dispalyMainClass)
        $("body").css("height", "auto")
        $("body").css("overflow", "initial")
        if (_oInfoIsHideMack) {
            $(".kim-mack-content").hide()
            $(oInfo.backgroup).hide()
        }

    })

    $(".kim-all-noicon-close").click(function(){
        $('body', parent.document).css("overflow", "initial")  //子窗口获取父窗口的元素
        $('#router', parent.document).css("overflow", "initial")   //子窗口获取父窗口的元素
        $('#router iframe', parent.document).css("height", "3000px")  //子窗口获取父窗口的元素
        // parent.$("body").css("height","3000px");

        $(oInfo.dispalyMainClass).hide()

        $(".kim-mack-content").hide()
        $(oInfo.backgroup).hide()
    })

    //按下鼠标,移动鼠标,移动登录框
    document.querySelector(oInfo.dragDropClass).onmousedown = function (e) {
        //获取此时的可视区域的横坐标-此时登录框距离左侧页面的横坐标
        var spaceX = e.clientX - document.querySelector(oInfo.dispalyMainClass).offsetLeft
        var spaceY = e.clientY - document.querySelector(oInfo.dispalyMainClass).offsetTop
        //移动的事件
        document.onmousemove = function (e) {
            //新的可视区域的横坐标-spaceX====>新的值--->登录框的left属性
            var x = e.clientX - spaceX
            var y = e.clientY - spaceY
            document.querySelector(oInfo.dispalyMainClass).style.left = x + "px"
            document.querySelector(oInfo.dispalyMainClass).style.top = y + "px"

        }
    }

    document.onmouseup = function () {
        document.onmousemove = null; //当鼠标抬起的时候,把鼠标移动事件干掉
    }
}



//锚点
var anchorPoint = location.hash.substr(1)
if (anchorPoint) {
    console.log(anchorPoint)
    $("." + anchorPoint).css("color", "#fff")
}



//------------------------------------ JQ-------------------------------------
//封装点击切换的事件
var SelectTip = (function () {
    var change = function (click, displayElement, cliclStyle, displayStyle) {
        $(click).click(function () {
            $(this).addClass(cliclStyle).siblings().removeClass(cliclStyle);
            $(displayElement).eq($(this).index()).addClass(displayStyle).siblings().removeClass(displayStyle);
        })
    }
    return {
        change: change
    };
})()






// 基于JQ  先引进JQ的包
//<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>


// ----------------     tab选项   -------------------------
var SelectTab = (function () {
    var change = function (click, displayElement, cliclStyle, displayStyle) {
        $(click).click(function () {
            $(this).addClass(cliclStyle).siblings().removeClass(cliclStyle);
            $(displayElement).eq($(this).index()).addClass(displayStyle).siblings().removeClass(displayStyle);
        })
    }
    return { change: change };
})()



// ----------------     向上滚动  -------------------------
jQuery(document).ready(function ($) {
    // 这行是 Opera的补丁, 少了它 Opera 是直接用跳的而且画面闪烁 by willin
    $body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body')
    $('#top').click(function () {
        // $body.animate({ scrollTop: $('#header').offset().top }, 1000);
        $body.animate({ scrollTop: 0 }, 400);
        return false // 阻止默认事件
    })




    // ----------------     获取锚点和？传参 1   -------------------------
    var KimRebder = (function () {
        var init = function () { }
        var change = function (oData) {
            if (!oData.dataSource) {
                oData.dataSource = null
            }
            if (!oData.tempName) {
                oData.tempName = "temp"
            }
            var obj = {
                datas: oData.datas
            }

            $(oData.ele).append(template(oData.tempName, obj))
        }
        return {
            init: init,
            change: change,
        }
    })()


    // function locationHash() {
    //     return location.hash.substr(1)
    // }

    // function locationSearch() {
    //     var adataSource = location.search.substr(1).split("&")
    //     var obj = {}
    //     adataSource.forEach(function(ele, i) {
    //         var ts = ele.split("=")
    //         obj[ts[0]] = ts[1]
    //     })
    //     return obj
    // }

    // function locationExtract() { //抽取#锚点和?传参共有的
    //     var dataSource = locationHash()
    //     if (!dataSource) {
    //         dataSource = locationSearch().dataSource
    //     }
    //     return dataSource
    // }

    // var data1 = [{
    //     img: "../../../v2/image/detailNav/Finance.jpg",
    //     title: "进口货款融资",
    //     jieshaos: ["洲博通旗下商业保理公司是持牌金融机构，为您买断收款风险，无需抵押和担保，帮您提前回收货款。"],
    //     youshis: [{ name: "覆盖广：和全球知名征信机构和保险公司合作，可操作全球大多数国家和地区买家。" }, { name: "无追索：买家即使违约，也不会要求供应商归还融资款。" }, { name: "放款快：买家确认单据后三个工作日内供应商即可获得70%-90%的融资款。" }],
    //     // buttons: ["点此查看双备案流程", "PDF下载"],
    //     index: 0
    // }, ]
    // var data2 = [{
    //     img: "../../../v2/image/detailNav/Global.jpg",
    //     title: "进口退税融资",
    //     jieshaos: ["洲博通外综服平台是在广州市成功备案的外综服企业，合法合规提供代办进口退税服务；获得多家银行资金支持，提供进口退税垫资服务。", "生产企业与洲博通分别在所属国税局完成外贸综合服务企业代办进口退税备案后，便可委托洲博通进行报关、收结汇、物流、信保，退税和协助金融等服务。"],
    //     youshis: [{ name: "最快1个工作日释放退税款" }, { name: "生产企业双备案指导" }, ],
    //     buttons: ["点此查看双备案流程"],
    //     index: 1
    // }]


    // var dataSource = locationExtract()
    // switch (dataSource) {
    //     case "data1":
    //         dataSource = data1;
    //         break;
    //     case "data2":
    //         dataSource = data2;
    //     default:
    //         dataSource = data1;
    // }

    //使用
    // KimRebder.change({
    //     ele: ".aui-flexView",
    //     datas: dataSource
    // })

})

{
    /* <div class="tab-panel-item qiyedongtai tab-active">
    <script type="text/html" id="temp">
    		{{each datas as data}}
    		<a href="https://www.vmaotong.com/v2/information/informationDetail?id={{data.id}}"
    			 class="aui-flex b-line">
    				<div class="aui-flex-nav-img">
    						<img src="https://www.vmaotong.com/api/file/download?filename={{data.logo}}" alt="">
    				</div>
    				<div class="aui-flex-box">
    						<h2>{{data.title}}</h2>
    						<div class="name_time">
    								<p>{{data.article}}新闻</p>
    								<p>{{data.articleTime}}</p>
    						</div>
    				</div>

    				{{if data.jieshaoImg != null}}
               <img src="{{data.jieshaoImg}}" alt="" style="margin-top: 10px">
            {{/if}}
    		</a>
    		{{/each}}
    </script>

    </div> */
}


// ----------------     获取锚点和？传参 2  -------------------------
(function ($) {
    $.getUrlParam = function (name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
        var r = window.location.search.substr(1).match(reg); //匹配目标参数
        if (r != null) return unescape(r[2]);
        return null; //返回参数值
    }
})(jQuery);


// ----------------     获取cookie  -------------------------
// function getCookie(name) {
//     var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
//     return r ? r[1] : undefined;
// }

// var alipayData = document.location.search.substr(1);
// $.ajax({
//     url: "/api/v1.0/order/payment",
//     type: "put",
//     data: alipayData,
//     headers: {
//         "X-CSRFToken": getCookie("csrf_token")
//     }
// })

// ----------------     免广告  -------------------------
var d = new Date();
document.cookie = 'app-installed=1;expries=' + d.toGMTString(d.setYear(2028));

//----------------     解析url中的查询字符串  ------------------------- 
function decodeQuery() {
    var search = decodeURI(document.location.search);
    return search.replace(/(^\?)/, '').split('&').reduce(function (result, item) {
        values = item.split('=');
        result[values[0]] = values[1];
        return result;
    }, {}); //后面的{} result是后面的{}  renduce第二个参数,item是遍历的
}



//----------------     JS 点击其他关闭  阻止事件冒泡 ------------------------- 

// window.onload = function(ele) {
//     var oSelect = document.getElementsByTagName(ele)[0];
//     var oSub = document.getElementsByTagName(ele)[0];
//     var aLi = oSub.getElementsByTagName(ele);
//     var z = document.getElementsByClassName(ele)[0];
//     var i = 0;

// z.onclick = function(event) {
//     var style = this.style;
//     style.display = "block";
//     //阻止事件冒泡
//     (event || window.event).cancelBubble = true || event.preventDefault()
// };



// oSelect.onclick = function(event) {
//     var style = z.style;
//     style.display = style.display == "block" ? "none" : "block";
//     //阻止事件冒泡
//     (event || window.event).cancelBubble = true || event.preventDefault()
// };

// };


//----------------     JQ 点击其他关闭  阻止事件冒泡 ------------------------- 
$(function () {
    $('#btnShow').click(function (event) {
        //取消事件冒泡  
        event.stopPropagation()
        //按钮的toggle,如果div是可见的,点击按钮切换为隐藏的;如果是隐藏的,切换为可见的。  
        $('#divTop').toggle('slow')
        return false;
    })
    //点击空白处隐藏弹出层，下面为滑动消失效果和淡出消失效果。
    $(document).click(function (event) {
        var _con = $('#divTop') // 设置目标区域
        if (!_con.is(event.target) && _con.has(event.target).length === 0) { // Mark 1
            //$('#divTop').slideUp('slow')  //滑动消失
            $('#divTop').hide(1000) //淡出消失
        }
    });
})


//----------------                   返回页面           ------------------------- 
function hrefBack() {
    history.go(-1);
}


//----------------                   正则获取cookie     ------------------------- 
function getCookie(name) {
    //var res = document.cookie.match(/\bcsrf_token=([^;]*)\b/)
    var res = document.cookie.match("\\b" + name + "=([^;]*)\\b");
    return res ? res[1] : undefined;
}



//----------------  获取UPR地址中的参数  解析url中的查询字符串 ------------------------- 
function decodeQuery() {
    var search = decodeURI(document.location.search);
    return search.replace(/(^\?)/, '').split('&').reduce(function (result, item) {
        values = item.split('=');
        result[values[0]] = values[1];
        return result;
    }, {}); //后面的{} result是后面的{}  renduce第二个参数,item是遍历的
}


//----------------                   UUID编码     ------------------------- 
function generateUUID() {
    var d = new Date().getTime();
    if (window.performance && typeof window.performance.now === "function") {
        d += performance.now(); //use high-precision timer if available
    }
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = (d + Math.random() * 16) % 16 | 0;
        d = Math.floor(d / 16);
        return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
    return uuid;
}



//------------------------------------------------------------- 

// 把object{id:1,name="张三"}  转换成  id=1&name="张三"
// if (typeof params ==='object') {
//    temArr=[]
//  for (var key in params) {
//    temArr.push(key+"="+params[key])
//  }
//  params=temArr.join("&")
// }

//map()函数 [ ].map(item=>{ item.name=item.value})
// //处理表单数据  $('#form-house-info').serializeArray().map()
// $('#form-house-info').submit(function (e) {
//     e.preventDefault()
//     var data={}           //处理表单数据
//     $('#form-house-info').serializeArray().map(function(item){ data[item.name]=item.value })
//     var facility = []    //处理设施id信息
//     $(':checked[name=facility]').each(function(index,attr){
// //     // facility.push($(this).val())
// //     facility[index]=$(this).val()  }) //这种使用方法更优秀
//         facility[index] = $(attr).val()});
//      data.facility = facility;
//  }



//JQ知识
//width() - 返回元素的宽度。
//height() - 返回元素的高度。
//innerWidth() 方法返回元素的宽度（包括内边距）。                    
//innerHeight() 方法返回元素的高度（包括内边距）。                    
//outerWidth() 方法返回元素的宽度（包括内边距和边框）。             
//outerHeight() 方法返回元素的高度（包括内边距和边框）。        
//outerWidth(true) 方法返回元素的宽度（包括内边距、边框和外边距）
//outerHeight(true) 方法返回元素的高度（包括内边距、边框和外边距）。  
//返回文档（HTML 文档）$(document).height()的高度
//返回窗口（浏览器视口）$(window).height()的高度